package com.example.easyscript.service.master.intf;

import com.example.easyscript.bean.StepHandler;
import com.example.easyscript.bean.task.StatusBean;
import com.example.easyscript.bean.task.StepBean;
import com.example.easyscript.bean.task.TaskBean;
import com.example.easyscript.dto.Resp.RunnerInfoReq;

/**
 * 任务执行器
 */
public interface TaskRunnerService {

    /**
     * 执行任务
     *
     * @param taskBean 任务
     */
    void performTask(TaskBean taskBean);

    /**
     * 判断目标状态是否与实际对应上
     */
    boolean checkCurrentStatusIsTargetStatus();

    /**
     * 切换操作
     */
    void changeOperation(TaskBean taskBean);

    /**
     * 确认实际状态是什么并且进行状态校准
     */
    void determineCurrentStatusAndCalibrate();

    /**
     * 确认当前状态是否是目标状态并且执行任务
     */
    void verifyCurrentStateAndExecuteTask() ;

    /**
     * 执行步骤
     */
    void handleStep() ;

    /**
     * 加载当前任务
     * @param taskBean 任务
     */
    void loadTaskBean(TaskBean taskBean) ;

    RunnerInfoReq getRunnerInfo();
}
